package trastienda.bean;

import javax.faces.application.FacesMessage;
import javax.faces.context.ExternalContext;
import javax.faces.context.FacesContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

import trastienda.dao.UsuarioDAO;
import trastienda.excepcion.DAOExcepcion;
import trastienda.modelo.Usuario;

public class UsuarioBean {

	private String idUsuario;
	private String clave;
	private String nombres;
	private String paterno;
	private String materno;
	private String correo;
	private String direccion;
	private String telefono;
	private String estado;

	public String getIdUsuario() {
		return idUsuario;
	}

	public void setIdUsuario(String idUsuario) {
		this.idUsuario = idUsuario;
	}

	public String getClave() {
		return clave;
	}

	public void setClave(String clave) {
		this.clave = clave;
	}

	public String getNombres() {
		return nombres;
	}

	public void setNombres(String nombres) {
		this.nombres = nombres;
	}

	public String getPaterno() {
		return paterno;
	}

	public void setPaterno(String paterno) {
		this.paterno = paterno;
	}

	public String getMaterno() {
		return materno;
	}

	public void setMaterno(String materno) {
		this.materno = materno;
	}

	public String getCorreo() {
		return correo;
	}

	public void setCorreo(String correo) {
		this.correo = correo;
	}

	public String getDireccion() {
		return direccion;
	}

	public void setDireccion(String direccion) {
		this.direccion = direccion;
	}

	public String getTelefono() {
		return telefono;
	}

	public void setTelefono(String telefono) {
		this.telefono = telefono;
	}

	public String getEstado() {
		return estado;
	}

	public void setEstado(String estado) {
		this.estado = estado;
	}

	
	
	public String listar() {
		System.out.println("UsuarioBean: listar()");
		UsuarioDAO dao = new UsuarioDAO();
		ExternalContext context = FacesContext.getCurrentInstance()
				.getExternalContext();
		HttpSession session = (HttpSession) context.getSession(true);
		try {
			session.setAttribute("USUARIO_LISTADO", dao.listar());
		} catch (DAOExcepcion e) {
			System.err.println(e.getMessage());
			FacesContext.getCurrentInstance().addMessage(null,
					new FacesMessage("Hubo un problema: " + e.getMessage()));
			return "error";
		}
		return "usuarioBean_listar";
	}
	
	
	public String insertar() {
		System.out.println(idUsuario);
		System.out.println(clave);
		System.out.println(nombres);
		System.out.println(paterno);
		System.out.println(materno);
		System.out.println(correo);
		System.out.println(direccion);
		System.out.println(telefono);
		System.out.println(estado);
		Usuario vo = new Usuario();
		vo.setIdUsuario(idUsuario);
		vo.setClave(clave);
		vo.setNombres(nombres);
		vo.setPaterno(paterno);
		vo.setMaterno(materno);
		vo.setCorreo(correo);
		vo.setDireccion(direccion);
		vo.setTelefono(telefono);
		vo.setEstado(estado);
		
		UsuarioDAO dao = new UsuarioDAO();
		try {
			dao.insertar(vo);
		} catch (DAOExcepcion e) {
			System.err.println(e.getMessage());
			FacesContext.getCurrentInstance().addMessage(null,
					new FacesMessage("Hubo un problema: " + e.getMessage()));
			return "error";
		}
		return listar();
	}

	public String nuevo() {
		return "usuarioBean_nuevo";
	}
	
	public String buscar() {
		System.out.println("UsuarioBean: buscar()");
		return "buscar";
	}
	
	
	
	
	
	public String eliminar() {
		ExternalContext context = FacesContext.getCurrentInstance()
				.getExternalContext();
		HttpServletRequest request = (HttpServletRequest) context.getRequest();
		System.out.println(request.getParameter("idUsuario"));
		UsuarioDAO dao = new UsuarioDAO();
		try {
			dao.eliminar(request.getParameter("idUsuario"));
		} catch (DAOExcepcion e) {
			System.err.println(e.getMessage());
			FacesContext.getCurrentInstance().addMessage(null,
					new FacesMessage("Hubo un problema: " + e.getMessage()));
			return "error";
		}
		return listar();
	}
	
	public String editar() {
		ExternalContext context = FacesContext.getCurrentInstance()
				.getExternalContext();
		HttpServletRequest request = (HttpServletRequest) context.getRequest();
		UsuarioDAO dao = new UsuarioDAO();
		try {
			Usuario usuario = dao.obtener(request.getParameter("idUsuario"));
			System.out.println(usuario.getIdUsuario());
			System.out.println(usuario.getClave());
			System.out.println(usuario.getNombres());
			System.out.println(usuario.getPaterno());
			System.out.println(usuario.getMaterno());
			System.out.println(usuario.getCorreo());
			System.out.println(usuario.getDireccion());
			System.out.println(usuario.getTelefono());
			System.out.println(usuario.getEstado());
			request.setAttribute("usuarioBean", usuario);
		} catch (DAOExcepcion e) {
			System.err.println(e.getMessage());
			FacesContext.getCurrentInstance().addMessage(null,
					new FacesMessage("Hubo un problema: " + e.getMessage()));
			return "error";
		}
		return "rolBean_editar";
	}
	
	public String actualizar() {
		Usuario vo = new Usuario();		
		vo.setIdUsuario(idUsuario);
		vo.setClave(clave);
		vo.setNombres(nombres);
		vo.setPaterno(paterno);
		vo.setMaterno(materno);
		vo.setCorreo(correo);
		vo.setDireccion(direccion);
		vo.setTelefono(telefono);
		vo.setEstado(estado);
		UsuarioDAO dao = new UsuarioDAO();
		try {
			dao.actualizar(vo);
		} catch (DAOExcepcion e) {
			System.err.println(e.getMessage());
			FacesContext.getCurrentInstance().addMessage(null,
					new FacesMessage("Hubo un problema: " + e.getMessage()));
			return "error";
		}
		return listar();
	}
	
	

	
}
